home *** CD-ROM | disk | FTP | other *** search
- /* まだまだ動かないけど、ディレクトリ移動は未サポートだけど、形にはなったバージョン(でもこういう形には10月からなっていたんだ。ぐすん。SYSTEM関数がうまく動かないんだよ~。98ではきちんとコンパイル出来るのに)V.0.1 92/12/30 wed */
-
- /* ひゃっほ~!動いたよ~ん。やったー!!!すげぇ~。 V.1.00 93/1/10 SUN */
- /* ちょっとした手直し・・・・ V.1.02 93/2/04 TUE */
- /* すこしのバグみたいな(^^;テナオシ V.1.02a 93/7/23 FRI*/
- /* lcon に対応(^^; V.1.03 93/7/28 WEN */
-
- /* 書式:
- IF2 [-l] [TMENU.IF2 のあるドライブ] ファイル名.拡張子
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- void if2_check(char f_name[], char drv[]);
- void if2_exec(char if2_file[], char f_name[]);
-
- int l = 0;
-
- void main( int argc, char *argv[] )
- {
- char f_name[32],drv[128];
-
- if ( !( argc == 2 || argc == 3 || argc == 4))
- {
- printf ("Usage : IF2 [op.] data_file_name.???\n");
- exit(1); /* 異常終了 */
- }
-
- else if ( argc == 4)
- {
- strcpy(drv,argv[2]);
- l = 1;
- sscanf(argv[3],"%32s",f_name); /* argv[3] からファイル名を取得 */
-
- }
-
- else if ( argc == 3)
- {
- if ( 0 == stricmp("-l",argv[1]) ) /* オプション -l があるか */
- {
- l = 1;
- strcpy(drv,"D:");
- }
- else
- strcpy(drv,argv[1]);
-
- sscanf(argv[2],"%32s",f_name); /* argv[2] からファイル名を取得 */
-
- }
- else if ( argc == 2)
- {
- strcpy(drv,"D:");
- sscanf(argv[1],"%32s",f_name); /* argv[1] からファイル名を取得 */
-
- }
-
-
- if2_check(f_name,drv); /* 実際の実行関数へと移動 */
-
- puts("ふつーにおわったお(⌒.⌒)v");
-
- }
-
- void if2_check(char f_name[], char drv[])
- {
- int n;
- char if2_file[128];
- FILE *tmpstr;
- char ex_1[4],ex_2[4]; /* 拡張子用の配列 */
- for( n =0; n <= 31; n++) /* 入力ファイルの拡張子の取得 */
- {
- if (f_name[n] == '.')
- {
- sscanf(f_name+n+1,"%3s",ex_1);
- break;
- }
- }
-
- strcat(drv,"\\TMENU.IF2");
-
- if ((tmpstr = fopen(drv,"r")) == NULL)
- {
- printf("ファイルが開けへんかったわ。ごめんねぇ(^^;\n");
- if ( l == 1) system("lcon I");
- exit(1);
- }
-
- for (; fgets(if2_file,128,tmpstr);)
- {
- sscanf(if2_file,"%3s",ex_2); /* .IF2からの拡張子の取得 */
- if ( 0 == stricmp(ex_1,ex_2)) /*拡張子の比較 大文字小文字の区別なし*/
- {
- fclose(tmpstr);
- if2_exec(if2_file,f_name);
- break;
- }
- else
- continue;
- }
- }
-
- void if2_exec(char if2_file[], char f_name[])
- {
- int i = 0,f,n;
- char buff[128],tmp[128] = "RUN386.EXE ";
- char con[32];
-
- for ( i=10, f=0; '\n' != if2_file[i]; i++, f++)
- buff[f] = if2_file[i];
-
- buff[f] = ' '; /* ファイル名の連結がうまくいくおまじない。 */
- buff[f+1] = '\0'; /* ナル文字の追加。 f+n+1 が buff の最後*/
-
- strcat(buff,f_name); /*ファイル名の付加*/
-
- if ( l == 1) printf("if2 V1.03 lcon対応 :\n");
- else printf("if2 V1.03 : \n");
-
- if ( if2_file[5] == '0') /* EXE,COM,BAT のチエック */
- {
- printf("%s\n",strcat(tmp,buff)); /* RUN386 をつける。 */
-
- if ( l == 1) system("lcon S"); /* 情けね~(^_^; */
- system(tmp); /* 起動するはず・・・ */
- if ( l == 1) system("lcon I");
-
- }
-
- else if( if2_file[5] == '1') /* こちらがリアルモード用の処理 */
- {
-
- for ( i = 0; buff[i] != ' '; i++)
- {
- con[i] = buff[i]; /* console.exe が有るかどうかの処理のため */
- }
- /* CONSOLE.EXE や ORICON.EXE を抜く */
- if ( 0 == stricmp("d:\\console.exe",con))
- {
- for ( i = 10;; i++)
- {
- if ( buff[i] == ' ' && buff[i+2] == ':')
- {
- for( n = i+1, f = 0; buff[n] != '\0'; n++, f++)
- tmp[f] = buff[n];
- tmp[f] = '\0';
- break;
- }
- }
- }
-
- else /* console.exe が無かったときの処理 */
- {
- for( f = 0; buff[f] != '\0'; f++)
- tmp[f] = buff[f];
- tmp[f] = '\0';
- }
-
- if ( l == 1) system("lcon S");
- system(tmp);
- if ( l == 1) system("lcon I");
- }
- }
-
-